package com.aaa.controller;

import com.aaa.annotation.SysLog;
import com.aaa.entity.*;
import com.aaa.service.CCashierService;
import com.aaa.utils.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.annotations.Select;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
 * 门诊管理：处方划价
 */
@Controller
@RequestMapping("caocc")
public class CCashierController {
    @Resource
    private CCashierService cCashierService;

    //进入处方页面
    @RequestMapping("cc")
    @SysLog("处方划价->")
    public Object look(Model model){
        //查询所有药房
        /*List<CWarehuose> selware = cCashierService.selware();
        model.addAttribute("selware",selware);*/
        return  "cao/cashier";
    }
    //查询所有患者信息 点击开始划价的时候就会跳出选择患者的信息
    @RequestMapping("selpreson")
    @ResponseBody
    public Object selperson(Integer page, Integer limit){
        List<ReportVo> sel = cCashierService.sel();
        return new Page().page(sel,page,limit);
    }
    //查询药品所有信息 划价之后会出现所有药品的信息
    @RequestMapping("seldrug")
    @ResponseBody
    @SysLog("查询药品所有信息->")
    public Object seldrug(String durgname,Integer page, Integer limit,CPharmacy cPharmacy){
        cPharmacy.setPharmacyName(durgname);
        List<CPharmacy> selpharm = cCashierService.selpharm(cPharmacy);
       return new Page().page(selpharm,page,limit);
    }

    /**
     * 查询处方中是否有这个药  如果没有这个 点击添加药品到患者表中 添加不了
     *将挂号的id放入处方id里
     * @param cCashier  处方表
     * @param reid  用户id
     * @param mename  药品名
     * @return
     */
    //查询这个用户的处方表上有没有这个药  (1) 挂号者的id 放进处方表 (2) 处方表中设置药品的名字
    @RequestMapping("selchu")
    @ResponseBody
    public Object seslchu(CCashier cCashier,Integer reid, String mename){
        cCashier.setReportId(reid);//把用户id存入数据库
        cCashier.setDurgname(mename);//把药品名称存入实体类
        Integer selcadr = cCashierService.selcadr(cCashier);
        return selcadr;
    }
    //添加处方药品   将查询出来的所有药品信息添加到患者表中 (1) 将已经开了处方的处方表放进addchu里  (2) 处方表获取药品名字 (3) 将获取到的药品名字放进药房
    @RequestMapping("addchu")
    @ResponseBody
    public Object addchu(CCashier cCashier,CPharmacy cPharmacy){
        //向处方添加药品
        Integer addchu = cCashierService.addchu(cCashier);
        String pharmacyName=cCashier.getDurgname();
        cPharmacy.setPharmacyName(pharmacyName);
        //减少药房中的数量
        cCashierService.deldrunum(cPharmacy);
        return addchu;
    }
    //查询该用户的处方  点击提交之后 会出现患者表中
    @RequestMapping("selpepi")
    @ResponseBody
    public Object selpepi(Integer perid,Integer page, Integer limit){
        List<CCashier> selpepi = cCashierService.selpepi(perid);
       return new Page().page(selpepi,page,limit);
    }
    //删除处方中的药品
    @RequestMapping("del")
    @ResponseBody
    public Object del(CCashier cCashier,String durnme,Integer durnum,CPharmacy cPharmacy){
        Integer del = cCashierService.del(cCashier);
        cPharmacy.setPharmacyName(durnme);
        cPharmacy.setDrugstorenum(durnum);
        cCashierService.adddrunum(cPharmacy);
        if(del==0){
            return "删除失败";
        }else{
            return "删除成功";
        }
    }
    //如果处方中有该药品则修改该药品的数量和价钱
    @RequestMapping("updchu")
    @ResponseBody
    public Object updchu(CCashier cCashier,CPharmacy cPharmacy){
        //修改处方中药品的数量
        Integer updchu = cCashierService.updchu(cCashier);
        String pharmacyName=cCashier.getDurgname();
        cPharmacy.setPharmacyName(pharmacyName);
        //修改仓库中药品的数量
         cCashierService.deldrunum(cPharmacy);
        return updchu;
    }
//   //模糊查询
//    @RequestMapping("mohu")
//    @ResponseBody
//    public Object mohu(String durgname,ReportVo reportVo, Integer page, Integer limit){
//        reportVo.setReportName(durgname);
//        PageHelper.startPage(page, limit);
//        List<ReportVo> mohu = cCashierService.mohu(reportVo);
//        PageInfo pageInfo = new PageInfo(mohu);
//        Map<String, Object> tableData = new HashMap<String, Object>();
//        //这是layui要求返回的json数据格式，如果后台没有加上这句话的话需要在前台页面手动设置
//        tableData.put("code", 0);
//        tableData.put("msg", "");
//        //将全部数据的条数作为count传给前台（一共多少条）
//        tableData.put("count", pageInfo.getTotal());
//        //将分页后的数据返回（每页要显示的数据）
//        tableData.put("data", pageInfo.getList());
//        return tableData;
//    }
    //添加用户病因
    @RequestMapping("addbing")
    @ResponseBody
    public Object addbing(Integer reid, String bing, CReport cReport){
        cReport.setZhuan(bing);
        cReport.setReportId(reid);
        Integer addbing = cCashierService.addbing(cReport);
        return addbing;
    }
    //查询用户有没有填写病因
    @RequestMapping("selbing")
    @ResponseBody
    public Object selbing(Integer reid){
        String selbing = cCashierService.selbing(reid);
        return selbing;
    }
    //查看用户的检查结果  检查完之后 在开始划价可以看到患者表中检查的操作结果
    @RequestMapping("lookbing")
    @ResponseBody
    public Object lookbing(Integer reid){
        String lookbing = cCashierService.lookbing(reid);
        return lookbing;
    }
    //查看该用户是否还有未交钱的项目
    @RequestMapping("seljiao")
    @ResponseBody()
    public Object seljiao(Integer reid){
        int seljiao = cCashierService.seljiao(reid);
        return seljiao;
    }
    //查询该用户所有的处方  可以在开始划价那边看到患者的表 拿了什么药和做了什么检查
    @RequestMapping("selall")
    @ResponseBody
    public Object selall(Integer perid,Integer page, Integer limit){
        List<CCashier> selall = cCashierService.selall(perid);
       return new Page().page(selall,page,limit);
    }
    //查询用户所有的项目处方  如果没有这个 项目划价那边就看不到患者做了什么检查 添加要检查的项目也不会显示出来
    @RequestMapping("selximu")
    @ResponseBody
    public Object selximu(Integer perid,Integer page, Integer limit){
        List<CCashier> selximu = cCashierService.selximu(perid);
       return new Page().page(selximu,page,limit);
    }
    //查看该用户是否有缴费未做的项目
    @RequestMapping("selwei")
    @ResponseBody
    public Object selwei(Integer reid){
        //查询该用户有几个做过的项目
        Integer selyi = cCashierService.selyi(reid);
        //查询该用户有几个缴费的项目
        Integer selgong = cCashierService.selgong(reid);
        if(selyi==selgong){
            return 1;
        }else {
            return 0;
        }
    }
}
